package com.project.mapper;

import com.project.bean.CutPageBean;
import com.project.bean.ProductBean;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

public interface IProductMapper {
    /**
     * 添加商品
     *
     * @param product 商品实体
     * @return 添加的商品编号
     */
    Integer add(ProductBean product);

    /**
     * 按编号修改价格
     *
     * @param id    商品编号
     * @param price 商品价格
     */
    void update(@Param("id") Integer id, @Param("price") Integer price);

    /**
     * 按编号查询商品
     *
     * @param id 商品编号
     * @return 商品对象
     */
    ProductBean findById(Integer id);

    /**
     * 动态查询起始位置分页数据
     *
     * @param start    起始位置
     * @param pageSize 页容量
     * @param name     商品名
     * @param minPrice 最低价格
     * @param maxPrice 最高价格
     * @return 当前页商品集合
     */
    List<ProductBean> cutByItemListO(@Param("start") int start, @Param("pageSize") int pageSize, @Param("name") String name, @Param("minPrice") int minPrice, @Param("maxPrice") int maxPrice);

    /**
     * 动态查询记录数量
     *
     * @param start    起始位置
     * @param pageSize 页容量
     * @param name     商品名
     * @param minPrice 最低价格
     * @param maxPrice 最高价格
     * @return 记录数
     */
    int cutByItemCountO(@Param("name") String name, @Param("minPrice") int minPrice, @Param("maxPrice") int maxPrice);


    /**
     * 动态查询起始位置分页数据
     *
     * @param factory   工厂名
     * @param startDate 起始时间
     * @param endDate   结束时间
     * @return 当前页商品集合
     */
    List<ProductBean> cutByItemListT(@Param("start") int start, @Param("pageSize") int pageSize, @Param("factory") String factory, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

    /**
     * 动态查询记录数量
     *
     * @param factory   工厂名
     * @param startDate 起始时间
     * @param endDate   结束时间
     * @return 记录数
     */
    int cutByItemCountT(@Param("factory") String factory, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

    /**
     * 批量添加商品
     *
     * @param list 商品集合
     */
    void addList(@Param("list") List<ProductBean> list);

    /**
     * 批量删除商品
     *
     * @param idArray 商品编号数组
     */
    void delArray(@Param("idArray") Integer[] idArray);
}
